Many memory management mechanisms, such as memory pool allocation (e.g., slab allocation), exist for the efficient memory allocation of portions of memory (e.g., kernel objects) which display the desirable property of eliminating fragmentation caused by allocations and deallocations. These mechanisms can retain allocated memory that contains a portion of memory of a certain type, such as a data object of a certain type, for reuse upon subsequent allocations of portions of memory of the same type.
The primary motivation for these memory management mechanisms is that the initialization and destruction of the portions of memory can actually outweigh the cost of allocating memory for them.